#ifndef OCR_BAIDU_H
#define OCR_BAIDU_H

#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QHostInfo>

#include <QJsonDocument>
#include <QJsonParseError>
#include <QJsonObject>
#include <QJsonArray>

#include <QFile>
#include <QImage>

class OcrBaiDu : public QObject
{
    Q_OBJECT

public:
    OcrBaiDu(QObject *parent = nullptr);
    ~OcrBaiDu();

    /* 请求网络 */
    void requestNetwork(QString, QByteArray);

    /* 获取识别结果 */
    void getTheResult(QString fileName);
    void getTheResult(QImage image);

    /* 处理Json数据 */
    QString getJsonValue(QByteArray ba, QString key);

    /* 处理Json数据 */
    QString getJsonValue(QByteArray ba, QString key1, QString key2);

private:
    /* 存储获取tokenUrl地址 */
    QString tokenUrl;

    /* 存储serverapi地址 */
    QString serverApiUrl;

    /* 最终需要访问token的地址 */
    QString accessToken;

    /* 获取token的接口*/
    const QString token_org = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%1&client_secret=%2&";

    const QString api_key = "gnLWOv3a4IrWe0GyqkI1sfsB";

    const QString secret_key = "8vuWPxW0nlEnrmEsWO5G9sKc2nq9aGtz";

    /* 百度服务器API接口，发送图片可返回识别结果 */
    const QString server_api = "https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate?access_token=%1";

    /* 网络管理 */
    QNetworkAccessManager *networkAccessManager;
public slots:

    /* 准备读取响应返回来的数据 */
    void readyReadData();

    /* 响应完成处理 */
    void replyFinished();

    /* 开始识别 */
    void readyToDetection(QString);
    void readyToDetection(QImage);
signals:
    /* 识别到车牌，发送信号 */
    void ocrReadyData(QString);

};

#endif // OCR_BAIDU_H
